<?php
/**
 * @Author: Ron Chen
 * @Date:   2016-12-13 21:44:18
 * @Last Modified by:   Ron Chen
 * @Last Modified time: 2018-01-17 21:36:42
 */


namespace common\helpers;

class StringHelper {

	/**
	 * 生成文件名
	 */
	public static function generateFilename(){
		$prefix = rand(0,9);
		return uniqid($prefix);
	}

	/** 
     * 生成不带横杠的UUID 
     * @return string 
     */  
    public static function genuuid(){
        return sprintf('%04x%04x%04x%04x%04x%04x%04x%04x',  
            // 32 bits for "time_low"  
            mt_rand(0, 0xffff), mt_rand(0, 0xffff),  
            // 16 bits for "time_mid"  
            mt_rand(0, 0xffff),  
            // 16 bits for "time_hi_and_version",  
            // four most significant bits holds version number 4  
            mt_rand(0, 0x0fff) | 0x4000,
            // 16 bits, 8 bits for "clk_seq_hi_res",  
            // 8 bits for "clk_seq_low",  
            // two most significant bits holds zero and one for variant DCE1.1  
            mt_rand(0, 0x3fff) | 0x8000,
            // 48 bits for "node"  
            mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)  
        );  
    }

    /**
     * 加密
     */
    public static function encrypt($data,$key='funfind_zxcvbnm'){
        $key    =   md5($key);  
        $x      =   0;  
        $len    =   strlen($data);  
        $l      =   strlen($key); 
        $char   = '';
        $str    = '';
        for ($i = 0; $i < $len; $i++)  
        {  
            if ($x == $l)   
            {  
                $x = 0;  
            }  
            $char .= $key{$x};  
            $x++;  
        }  
        for ($i = 0; $i < $len; $i++)  
        {  
            $str .= chr(ord($data{$i}) + (ord($char{$i})) % 256);  
        }  
        return base64_encode($str);  
    }

    /**
     * 解密
     */
    public static function decrypt($data, $key='funfind_zxcvbnm')
    {
        $key = md5($key);  
        $x = 0;  
        $data = base64_decode($data);  
        $len = strlen($data);  
        $l = strlen($key);  
        $char   = '';
        $str    = '';
        for ($i = 0; $i < $len; $i++)  
        {  
            if ($x == $l)   
            {  
                $x = 0;  
            }  
            $char .= substr($key, $x, 1);  
            $x++;  
        }  
        for ($i = 0; $i < $len; $i++)  
        {  
            if (ord(substr($data, $i, 1)) < ord(substr($char, $i, 1)))  
            {  
                $str .= chr((ord(substr($data, $i, 1)) + 256) - ord(substr($char, $i, 1)));  
            }  
            else  
            {  
                $str .= chr(ord(substr($data, $i, 1)) - ord(substr($char, $i, 1)));  
            }  
        }  
        return $str; 
    }
}